package com.zkthink.ceres.finance.dao;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.zkthink.base.mapper.SuperMapper;
import com.zkthink.ceres.finance.dto.DepositJournalDTO;
import com.zkthink.ceres.finance.dto.DepositJournalSaveDTO;
import com.zkthink.ceres.finance.entity.DepositJournal;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 *
 * </p>
 *
 * @author vivi.huang
 * @date 2020-06-26
 */
@Repository
public interface DepositJournalMapper extends SuperMapper<DepositJournal> {

    /**
     * 获取保证金分页总数
     *
     * @param tenant
     * @param storeName 店铺名称
     * @param state     保证金状态
     * @param startTime 缴纳开始时间
     * @param endTime   缴纳结束时间
     * @return
     */
    @SqlParser(filter = true)
    Integer getTotalOfDepositJournalPage(@Param("tenant") String tenant, @Param("storeName") String storeName, @Param("state") Integer state, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 保证金分页列表
     *
     * @param tenant
     * @param storeName
     * @param state
     * @param startTime
     * @param endTime
     * @param page
     * @param size
     * @return
     */
    @SqlParser(filter = true)
    List<DepositJournalDTO> findDepositJournalPage(@Param("tenant") String tenant, @Param("storeName") String storeName, @Param("state") Integer state,
                                                   @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("page") long page, @Param("size") long size);

    /**
     * 保证金总金额
     *
     * @return
     * @param tenant
     */
    @SqlParser(filter = true)
    Long getDepositSummary(@Param("tenant")String tenant);

    /**
     * 更新保证金流水状态
     * @param transactionId
     */
    @SqlParser(filter = true)
    void updateRefundState(@Param("transactionId")String transactionId);

    @SqlParser(filter = true)
    void saveDepositJournal(DepositJournalSaveDTO depositJournal);
}
